/**
 * 创建对象的是三种方式
 */

// 使用对象字面量创建对象      对象字面量 --> {}  | 数组字面量 --> []
// 就是花括号 {} 里面包含了表达这个具体事物(对象)的属性和方法;
//  {}里面采取键值对的形式表示

var star = {
    name: 'zid',
    age: 12,
    sex: '男',
    sayHi: function () {
        console.log("大家好啊!")
    }
}


star.sayHi();


// 利用 new Object 创建对象
//      创建空对象  -> 通过内置构造函数Object创建对象
var tom = new Object();
// 给空对象添加属性和方法
tom.name = 'pink';
tom.age = 12;
tom.sex = 'female';
tom.sayHi = function () {
    console.log('你好呀!')
}

tom.sayHi();
console.log(tom.toString())


// 利用构造函数创建对象
//      构造函数的调用格式
//      var obj = new 构造函数名(实参1, 实参2, 实参3)


// 遍历对象
//      这种遍历对象, 就是不知道对象有什么属性的.
//      所以才会用 obj['attr'], 获取获取对象的属性值, 这有点类似 Java 中通过反射获取所有属性和属性值
for (let tomKey in tom) {
    console.log(tomKey);        // 这的k是属性名
    console.log(tom[tomKey])    // 这里的obj[k]是属性值
}
